package com.sima.java.prototype;

import java.io.*;

/**
 * Created by maple on 2017-08-20.
 */
public class Prototype implements Cloneable, Serializable {
    private static final long serialVersionUID = 1L;

    /* 浅复制 */
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    /* 深复制 */
    public Object deepClone() throws IOException, ClassNotFoundException {

        /* 写入当前对象的二进制流 */
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(this);

        /* 读出二进制流产生的新对象 */
        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bis);
        return ois.readObject();
    }
}
